package com.wongoing.sys.action;

import java.util.Date;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.wongoing.base.PageResult;
import com.wongoing.sys.model.SysTaskjob;
import com.wongoing.sys.service.SysTaskjobService;
import com.wongoing.sys.util.Constants;
import com.wongoing.sys.viewmodel.JsonResult;
import com.wongoing.util.DateConvert;
import com.wongoing.util.DateStyle;
import com.wongoing.util.LogService;
import com.wongoing.util.ModelAndViewConstants;
import com.wongoing.util.PageUtil;
import com.wongoing.util.Status;

@Controller
@RequestMapping("/sys/sysTaskjobAction")
public class SysTaskjobAction extends BaseAction{
	
	private SysTaskjobService service;
	
	@Autowired
	public void setService(SysTaskjobService service) {
		this.service = service;
	}
	
	/**
	 * 功能说明：进入列表显示界面
	 * 修改说明：
	 * @author zhenglibing
	 * @date 2017年10月15日 下午1:00:58
	 * @param pageSize 每页记录数
	 * @param pageCurrent 当前页索引
	 * @param orderField 排序字段
	 * @param orderDirection 排序方向
	 * @param paramJobName 参数：职位名称
	 * @return
	 */
	@RequestMapping(value="/toList")
	public ModelAndView toList(Integer pageSize, Integer pageCurrent, String orderField, String orderDirection, String paramJobName){
		ModelAndView mv = null;
		try {
			PageResult<SysTaskjob> pageResult = PageUtil.pageSet(this.getClass(), pageSize, pageCurrent, orderField, orderDirection);
			//非通用判断条件
			pageResult.getParam().put("jobStatus", "0");
			//模糊搜索
			//模糊查询判断
			if(paramJobName!=null && !"".equals(paramJobName)){
				pageResult.getParam().put("jobName", paramJobName);
				pageResult.setOrderField("jobName");
				pageResult.setOrderDirection("DESC");
				pageResult.getExt().put("paramJobName", paramJobName);
			}else{
				pageResult.setOrderField("jobName");
				pageResult.setOrderDirection("ASC");
			}
			pageResult = this.service.getTaskjobListPageResultByParam(pageResult);
			mv = new ModelAndView();
			mv.addObject(ModelAndViewConstants.PAGE_RESULT, pageResult);
			mv.setViewName(ModelAndViewConstants.TASKJOB_MAIN_VIEW);
			LogService.getInstance(this).debug(ModelAndViewConstants.TASKJOB_MAIN_VIEW);
		}
		catch(Exception ex) {
			LogService.getInstance(this).error("分页获取任务列表失败：" + ex.getMessage(), ex);
			mv = new ModelAndView(ModelAndViewConstants.ERROR_VIEW);
		}
		return mv;
	}
	
	/**
	 * 功能说明：进入添加界面
	 * 修改说明：
	 * @author zhenglibing
	 * @date 2017年10月15日 下午1:01:54
	 * @return
	 */
	@RequestMapping(value = "/toAdd")
	public ModelAndView toAdd(){
		ModelAndView mv = null;
		try {
			mv = new ModelAndView();
			mv.addObject(ModelAndViewConstants.OPERATION_KEY, ModelAndViewConstants.OPERATION_VALUE_ADD);
			mv.addObject(ModelAndViewConstants.TITLE_KEY, "添加任务");
			mv.setViewName(ModelAndViewConstants.TASKJOB_EDIT_VIEW);
			LogService.getInstance(this).debug("进入任务添加页："+ModelAndViewConstants.TASKJOB_EDIT_VIEW);
		} catch (Exception ex) {
			LogService.getInstance(this).error("任务插入失败：" + ex.getMessage(), ex);
			mv = new ModelAndView(ModelAndViewConstants.ERROR_VIEW);
		}
		return mv;
	}
	
	/**
	 * 功能说明：进入编辑界面
	 * 修改说明：
	 * @author zhenglibing
	 * @date 2017年10月15日 下午1:02:25
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/toEdit")
	public ModelAndView toEdit(Integer id){
		ModelAndView mv = null;
		try {
			SysTaskjob task = this.service.getByPrimaryKey(id);
			mv = new ModelAndView();
			mv.addObject(ModelAndViewConstants.OPERATION_KEY,ModelAndViewConstants.OPERATION_VALUE_EDIT);
			mv.addObject(ModelAndViewConstants.TASKJOB_MODEL, task);
			mv.addObject(ModelAndViewConstants.TITLE_KEY, "修改任务");
			mv.setViewName(ModelAndViewConstants.TASKJOB_EDIT_VIEW);
			LogService.getInstance(this).debug("进入任务编辑页："+ModelAndViewConstants.TASKJOB_EDIT_VIEW);
		} catch (Exception ex) {
			LogService.getInstance(this).error("任务编辑失败：" + ex.getMessage(), ex);
			mv = new ModelAndView(ModelAndViewConstants.ERROR_VIEW);
		}
		return mv;
	}
	
	/**
	 * 功能说明：执行删除操作
	 * 修改说明：
	 * @author zhenglibing
	 * @date 2017年10月15日 下午1:02:48
	 * @param id
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/doDel")
	public Map<String,Object> doDel(Integer id){
		Map<String, Object> jsonResult = null;
		try {
			String tabid = tabid(ModelAndViewConstants.TASK_SYS_ID);
			SysTaskjob role = new SysTaskjob();
			role.setId(id);
			role.setJobStatus(Constants.PERSISTENCE_DELETE_STATUS);
			Integer count = this.service.updateByPrimaryKey(role);
			if(count>0){
				String msg = "定时任务信息删除成功";
				jsonResult = JsonResult.jsonReturn(Status.OK.getCode(), msg, tabid,false,"","");
				LogService.getInstance(this).debug("删除定时任务信息成功，数量："+count);
			}else{
				String msg = "该数据已不存在，请核对数据正确性，或重新刷新数据尝试。";
				jsonResult = JsonResult.jsonReturnErr(msg);
				LogService.getInstance(this).debug("删除定时任务信息失败，数量："+count);
			}
		} catch (Exception ex) {
			String msg = "删除失败";
			jsonResult = JsonResult.jsonReturnErr(msg);
			LogService.getInstance(this).error("定时任务信息删除失败：" + ex.getMessage(), ex);
		}
		return jsonResult;	
	}
	
	/**
	 * 功能说明：执行保存操作
	 * 修改说明：
	 * @author zhenglibing
	 * @date 2017年10月15日 下午1:03:12
	 * @param entity
	 * @param op
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/doSave")
	public Map<String,Object> doSave(SysTaskjob entity, String op){
		Map<String, Object> jsonResult = null;
		try {
			String tabid = tabid(ModelAndViewConstants.TASK_SYS_ID);
			if (null == op || ModelAndViewConstants.OPERATION_VALUE_ADD.equals(op)) {
				entity.setJobStatus("0");
//				entity.setUpdateTime(DateConvert.formatDateToString(new Date(), DateStyle.YYYY_MM_DD));
				entity.setUpdateTime(new Date());
				this.service.insert(entity);
				Integer statusCode = 200;
				String msg = "定时任务添加成功！";
				jsonResult = JsonResult.jsonReturn(statusCode.intValue(), msg, tabid);
				LogService.getInstance(this).debug("定时任务信息保存成功！");
			}else{
				this.service.updateByPrimaryKey(entity);
				Integer statusCode = 200;
				String msg = "定时任务修改成功！";
				jsonResult = JsonResult.jsonReturn(statusCode.intValue(), msg, tabid);
				LogService.getInstance(this).debug("定时任务信息修改成功！");
			}
		} catch (Exception e) {
			String msg = "定时任务修改失败！";
			jsonResult = JsonResult.jsonReturnErr(msg);
			LogService.getInstance(this).debug("定时任务信息修改失败："+e.getMessage());
		}
		return jsonResult;
	}
}
